#--
# Proyecto Único (Etapa 2)
# Analizador Sintáctico
# 
# Autores:
# (Grupo R07)
# César Hernández (06-39724)
# Daniel Valera (07-41725)
# 
# Versión: 0.1
#++
# = Exceptions.rb
# Archivo que contiene las siguientes excepciones, subclases de StandardError, 
# utilizadas en el proyecto: NotATokenError y ParserError.

# = Clase NotATokenError
# Utilizada para reportar errores lexicográficos.
class NotATokenError < StandardError
  attr_reader :reason
  
  # Inicializador de la clase.
  # <i>token</i>:: Caracter indebido.
  # <i>line</i>:: Línea donde se encontró el caracter indebido.
  # <i>column</i>:: Columna donde se encontró el caracter indebido.
  def initialize(token, line, column)
    @reason = <<-eos
Error: Caracter no esperado #{token} en línea #{line}, columna #{column}.
    eos
  end
end

# = Clase ParserError
# Utilizada para reportar errores de sintáxis.
class ParserError < StandardError
  attr_reader :reason
  
  # Inicializador de la clase.
  # <i>token</i>:: Caracter indebido.
  def initialize(token)
    if (token == nil)
      @reason = "Error de sintáxis al final del archivo."
    else
      @reason = "Error de sintáxis: Token inválido: " + token.to_s + "."
    end
  end
end
